/*
 * @Author: Zyunchao 18651805393@163.com
 * @Date: 2023-01-11 09:21:54
 * @LastEditors: Zyunchao 18651805393@163.com
 * @LastEditTime: 2023-03-16 19:50:47
 * @FilePath: /uums-front-monorepo/_core/@types/entity/AnnounceGroup.ts
 * @Description: 公告分组实体类
 */
export default interface AnnounceGroup {
    /**
     * 分组id（自动）
     */
    groupId: string
    /**
     * 分组名称
     */
    groupName: string
    /**
     * 主键
     */
    id: string
    /**
     * 行业
     */
    indusryContent: string
    /**
     * 机构
     */
    instituContent: string
    /**
     * 角色
     */
    roleContent: string
    /**
     * 用户
     */
    userContent: string
    /**
     * 角色对应机构
     */
    roleInstitu: string
    /**
     * 角色对应机构
     */
    roleInstituName: string
    /**
     * 状态（0：正常 1：失效 )
     */
    status: Status
    /**
     * 分组对象
     */
    groupType?: TargetType
    /**
     * 接收者，纯展示
     */
    acceptName?: string
    /**
     * 机构是否包含下级
     */
    instituHasLower?: HasLower
    /**
     * 分组类型
     */
    groupKey?: GroupKey
    /**
     * 扩展字段
     */
    [k: string]: any
}

export enum Status {
    /**
     * 正常
     */
    NORMAL = '0',
    /**
     * 失效
     */
    INVALID = '1'
}

export const StatusMapping = {
    [Status.NORMAL]: '启用',
    [Status.INVALID]: '停用'
}

/**
 * 分组对象
 */
export enum TargetType {
    /**
     * 用户
     */
    USER = '00',
    /**
     * 角色
     */
    ROLE = '01',
    /**
     * 机构
     */
    ORG = '02',
    /**
     * 领域，行业
     */
    INDUSTRY = '03'
}

export const TargetTypeMapping = {
    [TargetType.USER]: '用户',
    [TargetType.ROLE]: '角色',
    [TargetType.ORG]: '机构',
    [TargetType.INDUSTRY]: '领域'
}

/**
 * 分组类型映射不同的后台字段
 */
export const TargetTypeFieldMapping = {
    [TargetType.USER]: 'userContent',
    [TargetType.ROLE]: 'roleContent',
    [TargetType.ORG]: 'instituContent',
    [TargetType.INDUSTRY]: 'indusryContent'
}

export enum HasLower {
    HAS = '1',
    NO_HAS = '0'
}

export const HasLowerMapping = {
    [HasLower.HAS]: '包含',
    [HasLower.NO_HAS]: '不包含'
}

export enum GroupKey {
    /**
     * 自定义虚拟分组
     */
    CUSTOM = '1',
    /**
     * 实际的分组
     */
    PRAC = '0'
}